package projetolp2.GraphicInterface;

import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import projetolp2.Sistem.Sistema;

@SuppressWarnings("serial")
public class CadastrarPag2 extends MealPoints implements ActionListener{
	
	static JFrame janelaconfirmacaoOpiniao;
	private JPanel panelMenu = new JPanel(new GridLayout(0, 1));
	private JPanel panel1 = new JPanel(new GridLayout(0, 1));
	private JPanel panel2 = new JPanel(new GridLayout(0, 1));
	private JPanel panel3 = new JPanel(new GridLayout(0, 1));
	private JPanel panel4 = new JPanel(new GridLayout(0, 1));
	private JPanel panel5 = new JPanel(new GridLayout(0, 1));
	private JComboBox ESTABELECIMENTOS= new JComboBox();
	private JComboBox OPINIOES = new JComboBox();
	private JButton VOLTAR = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getVoltar());
	private JButton OPINAR = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getOpinar());
	private JButton FINALIZAR = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getFinalizar());
	final JLabel label = new JLabel("Escolha o estabelecimento e sua opini�o:");
	
	private String[] listaOpinioes;
	
	private JButton confirmacaoOpiniao = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getConfirmar());
	private JButton cancelaOpiniao = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getCancelar());
	//Contrutor vazio
	private static String NOMEUSUARIO;
	public CadastrarPag2(){
		
	}
	@SuppressWarnings("deprecation")
	private void corfirmacaoOpiniao(String estabelecimento,String opiniao){
		
		JLabel estabelecimentoOpiniao = new JLabel("Confirmar "+estabelecimento+": "+opiniao);
		JPanel panelConfirmacao = new JPanel(new GridLayout(0, 1));
		
		cancelaOpiniao.setMnemonic(KeyEvent.VK_I);
		cancelaOpiniao.addActionListener(this);
        label.setLabelFor(cancelaOpiniao);
        
        confirmacaoOpiniao.setMnemonic(KeyEvent.VK_I);
        confirmacaoOpiniao.addActionListener(this);
        label.setLabelFor(confirmacaoOpiniao);
		
        panelConfirmacao.add(estabelecimentoOpiniao);
		panelConfirmacao.add(cancelaOpiniao);
		panelConfirmacao.add(confirmacaoOpiniao);
		
		panelConfirmacao.setBorder(BorderFactory.createEmptyBorder(
                10, //top
                30, //left
                10, //bottom
                30) //right
                );
		JFrame.setDefaultLookAndFeelDecorated(true);
		janelaconfirmacaoOpiniao = new JFrame();
		janelaconfirmacaoOpiniao.setSize(400,180);//Tamanho da janela
		janelaconfirmacaoOpiniao.setResizable(true);//pode redimensionar a janela
		janelaconfirmacaoOpiniao.setLocation(30,30);//Local onde a janela aparecera
		janelaconfirmacaoOpiniao.setIconImage(null);
		janelaconfirmacaoOpiniao.setTitle("Confirma�ao de opiniao");
		janela.disable();
		janelaconfirmacaoOpiniao.add(panelConfirmacao);
		janelaconfirmacaoOpiniao.setVisible(true);
		
		
		janelaconfirmacaoOpiniao.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		janelaconfirmacaoOpiniao.addWindowListener(new java.awt.event.WindowAdapter() {   
			public void windowClosing(java.awt.event.WindowEvent e) { 
				if (e.getID() == WindowEvent.WINDOW_CLOSING){   
					janelaconfirmacaoOpiniao.dispose();
					janela.enable(true);
				}
			}
		});
		 

	}
	private void ajudaDeBotoes(){
		VOLTAR.setToolTipText("Voltar a janela anterior");
		OPINAR.setToolTipText("Cadastra a opini�o sobre determinado estabelecimento selecionado acima");
		FINALIZAR.setToolTipText("Finaliza o cadastramento, caso você não tenha opinado sobre deteminado estabelecimento, a opiniao sera computada como não conheço");
	}
	private void adicionaEstabelecimentos(String estabelecimento){
		try {
			List<String> listaEstabelecimentos = SISTEMA.nomeDeEstabelecimentos();
			for (int i = 0;i<listaEstabelecimentos.size();i++){
				ESTABELECIMENTOS.addItem(listaEstabelecimentos.get(i));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void mudaNomeUsuario(String nome){
		NOMEUSUARIO = nome;
	}
	@SuppressWarnings("deprecation")
	public void actionPerformed(ActionEvent e){
		if(e.getSource() == VOLTAR){
			removerAdicionar(cadastrarPag2,cadastrar );	
		}
		else if(e.getSource() == FINALIZAR){
			try {
				SISTEMA.atualizaListas();
				List<String> LISTOPINIOES = new ArrayList<String>();
				for(String i : listaOpinioes){
					LISTOPINIOES.add(i);
				}
				if(NOMEUSUARIO.equals("Nome")){
					NOMEUSUARIO = "";
				}
				Sistema.cadastraUsuario( NOMEUSUARIO,LISTOPINIOES);
			} catch (Exception e1) {
				e1.printStackTrace();
			}
			removerAdicionar(cadastrarPag2,menu );	
		}
		else if(e.getSource() == OPINAR){
			
			corfirmacaoOpiniao(ESTABELECIMENTOS.getSelectedItem().toString(),OPINIOES.getSelectedItem().toString());
		}
		else if(e.getSource() == confirmacaoOpiniao){
			if(OPINIOES.getSelectedItem().toString().equals("Detesto")){
				listaOpinioes[ESTABELECIMENTOS.getSelectedIndex()] = "-5";
			}
			else if(OPINIOES.getSelectedItem().toString().equals("Acho muito ruim")){
				listaOpinioes[ESTABELECIMENTOS.getSelectedIndex()] = "-4";
			}
			else if(OPINIOES.getSelectedItem().toString().equals("Acho bastante ruim")){
				listaOpinioes[ESTABELECIMENTOS.getSelectedIndex()] = "-3";
			}
			else if(OPINIOES.getSelectedItem().toString().equals("Acho ruim")){
				listaOpinioes[ESTABELECIMENTOS.getSelectedIndex()] = "-2";
			}
			else if(OPINIOES.getSelectedItem().toString().equals("Acho um pouco ruim")){
				listaOpinioes[ESTABELECIMENTOS.getSelectedIndex()] = "-1";
			}
			else if(OPINIOES.getSelectedItem().toString().equals("Não conheço")){
				listaOpinioes[ESTABELECIMENTOS.getSelectedIndex()] = "0";
			}
			else if(OPINIOES.getSelectedItem().toString().equals("Não é ruim")){
				listaOpinioes[ESTABELECIMENTOS.getSelectedIndex()] = "1";
			}
			else if(OPINIOES.getSelectedItem().toString().equals("É bonzinho")){
				listaOpinioes[ESTABELECIMENTOS.getSelectedIndex()] = "2";
			}
			else if(OPINIOES.getSelectedItem().toString().equals("Bastante bom")){
				listaOpinioes[ESTABELECIMENTOS.getSelectedIndex()] = "3";
			}
			else if(OPINIOES.getSelectedItem().toString().equals("Muito bom")){
				listaOpinioes[ESTABELECIMENTOS.getSelectedIndex()] = "4";
			}
			else if(OPINIOES.getSelectedItem().toString().equals("Incrível")){
				listaOpinioes[ESTABELECIMENTOS.getSelectedIndex()] = "5";				
			}
			
			janela.enable();
			janelaconfirmacaoOpiniao.dispose();//acho que destroe a janela
		}
		else if(e.getSource() == cancelaOpiniao){
			janela.enable();
			janelaconfirmacaoOpiniao.dispose();
		}
	}
	private void createComponents() {
		try {
			listaOpinioes = new String[SISTEMA.quantidadeDeEstabelecimentos()];
		} catch (Exception e) {
			listaOpinioes = new String[0];
			e.printStackTrace();
		}
		ajudaDeBotoes();
		try{
			for (int i = 0;i<39;i++){
				listaOpinioes[i] = "0";
			}
		}catch(Exception e){
			System.err.println(e.getMessage());
		}
		adicionaEstabelecimentos("estabelecimento teste");
		
		
		OPINIOES.addItem("Detesto");
		OPINIOES.addItem("Acho muito ruim");
		OPINIOES.addItem("Acho bastante ruim");
		OPINIOES.addItem("Acho ruim");
		OPINIOES.addItem("Acho um pouco ruim");
		OPINIOES.addItem("N�o conhe�o");
		OPINIOES.addItem("N�o � ruim");
		OPINIOES.addItem("� bonzinho");
		OPINIOES.addItem("Bastante bom");
		OPINIOES.addItem("Muito bom");
		OPINIOES.addItem("Incr�vel");
		
		VOLTAR.setMnemonic(KeyEvent.VK_I);
        VOLTAR.addActionListener(this);
        label.setLabelFor(VOLTAR);
        
        FINALIZAR.setMnemonic(KeyEvent.VK_I);
        FINALIZAR.addActionListener(this);
        label.setLabelFor(FINALIZAR);

        OPINAR.setMnemonic(KeyEvent.VK_I);
        OPINAR.addActionListener(this);
        label.setLabelFor(OPINAR);
        
        ESTABELECIMENTOS.setBackground(Color.white);
        OPINIOES.setBackground(Color.white);
		panel1.add(label);
		panel1.add(new JLabel("Estabelecimentos"));
		panel1.add(ESTABELECIMENTOS);
		panel1.add(new JLabel("Opinioes"));
		panel1.add(OPINIOES);
		panel1.add(new JLabel("Ap�s opinar sobre determinado estabelecimento aperte Opinar"));
		panel3.add(VOLTAR);
		panel4.add(OPINAR);
		panel5.add(FINALIZAR);
		 panel3.setBorder(BorderFactory.createEmptyBorder(
	                10, //top
	                130, //left
	                10, //bottom
	                130) //right
	                );
		 panel4.setBorder(BorderFactory.createEmptyBorder(
				 	10, //top
	                130, //left
	                10, //bottom
	                130) //right
	                );
		 panel5.setBorder(BorderFactory.createEmptyBorder(
				 	10, //top
	                130, //left
	                10, //bottom
	                130) //right
	                );
		panel2.add(panel3);
		panel2.add(panel4);
		panel2.add(panel5);
		panelMenu.add(panel1);
		panelMenu.add(panel2);
        panelMenu.setBorder(BorderFactory.createEmptyBorder(
                30, //top
                30, //left
                80, //bottom
                30) //right
                );
    }
	public Component panel(){
		createComponents();
		panelMenu.setVisible(true);
		
		
		return panelMenu;
	}	
}


